import eventlet
# 1.
eventlet.monkey_patch()
import socketio
import eventlet.wsgi

# 2.创建sio对象,并管理KombuManager对象
mgr = socketio.KombuManager('amqp://python:rabbitmqpwd@localhost:5672/toutiao')
sio = socketio.Server(async_mode='eventlet', client_manager=mgr)
app = socketio.Middleware(sio)

# 4.监听事件
sio.on('connect')
def on_connect(sid, environ):
    """
    把sid发送回去，然后拿着sid从web服务器发消息->rabbitmq消息队列，
    然后im服务器再从rabbitmq中取出消息，再往外发。
    :param sid:
    :param environ:
    :return:
    """
    # 返回sid
    sio.emit('message', sid, room=sid)

@sio.on('connect')
def on_connect(sid, environ):
    """
    :param sid:
    :param environ:
    :return:
    """
    user_id = '1162439860632420352'
    # 把sid添加user_id这个房间去
    sio.enter_room(sid, user_id)
    # 在web中就可以直接往user_id这个房间发送消息,sid就能搜到消息了
    # 往sid发送消息
    sio.emit('message', sid, room=sid)
    # 等同于往user_id发送消息,sid也能收到
    sio.emit('message', sid, room=user_id)

# 5.创建socket对象
socket = eventlet.listen(('192.168.226.129', 8888))

# 6.启动
eventlet.wsgi.server(socket, app)
